﻿#define  _CRT_SECURE_NO_WARNINGS 1
/*


C语言中整型算术运算总是至少以缺省整型类型的精度来进行的。
为了获得这个精度，表达式中的字符和短整型操作数在使用之前被转换为普通整型，这种转换称为整
型提升。

1. 有符号整数提升是按照变量的数据类型的符号位来提升的
2. 无符号整数提升，高位补0



表达式的整型运算要在CPU的相应运算器件内执小，
CPU内整型运算器(ALU)的操作数的字节⻓度⼀般就是int的字节⻓度，同时也是CPU的通用寄存器的⻓度。
因此，即使两个char类型的相加，在CPU执行时实际上也要先转换为CPU内整型操作数的标准⻓度。
通用CPU（general-purpose CPU）是难以直接实现两个8比特字节直接相加运算（虽然机器指令中可能有这种字节相加指令）。
所以，表达式中各种⻓度可能小于int⻓度的整型值，都必须先转换为
int或unsigned int，然后才能送入CPU去执行运算

*/
int main()
{
	char c1 = 125;
	//125的二进制       01111101
	//整型提升后        00000000000000000000000001111101
	char c2 = 10;
	//10的二进制       00001010
	//整型提升后       00000000000000000000000000001010
	//c1+c2=135       00000000000000000000000010000111

	//由于c3是char类型，所以发生截断c3=10000111
	//打印格式是整型，需要整型提升
	//整型提升11111111111111111111111110000111(是补码)
	//原码：  10000000000000000000000001111001
	//-121
	char c3 = c1 + c2;
	printf("%d\n", c3);
	return 0;
}